#include<iostream>
#include<set>
#include<map>
#include<cmath>

using namespace std;
const long long Max=1e10+10;
set<long long> cmz;
int main()
{
	int n;cin>>n;
	cmz.insert(Max);
	cmz.insert(-Max);
	while(n--)
	{
		long long op,x;
		cin>>op>>x;
		if(op==1)
		{
			if(cmz.count(x)) cout << "Already Exist" << endl;
			else cmz.insert(x);
		}
		else 
		{
			if(cmz.size()==2) cout<<"Empty"<<endl;
		else
		{
			auto it=cmz.lower_bound(x);
			long long a=*it;//注意long long
			auto temp=it;
			temp--;
			long long b=*temp;
			if(abs(a-x)>=abs(b-x)) 
			{
				cout<<b<<endl;
				cmz.erase(b);
			}
			else 
			{
				cout<<a<<endl;
				cmz.erase(a);
			}
		}
		}
	}
	return 0;
}
// #include <iostream>
// #include <set>

// using namespace std;

// typedef long long LL;

// const LL INF = 1e10 + 10;

// set<LL> mp;

// int main()
// {
//     int q; cin >> q;
//     // 左右护法 - 处理边界情况
//     mp.insert(-INF); mp.insert(INF);

//     while(q--)
//     {
//         LL op, len; cin >> op >> len;

//         if(op == 1) // 进货
//         {
//             if(mp.count(len)) cout << "Already Exist" << endl;
//             else mp.insert(len);
//         }
//         else // 出货
//         {
//             if(mp.size() == 2)
//             {
//                 cout << "Empty" << endl;
//             }
//             else
//             {
//                 // 找到距离 len 最近的那一个  
//                 auto it = mp.lower_bound(len);
//                 int a=*it;
//                 auto tmp = it;
//                 tmp--;
//                 int b=*tmp;
//                 if(abs(b - len) <= abs(a - len))
//                 {
//                     cout << b << endl;
//                     mp.erase(b); // 别忘了删除
//                 }
//                 else
//                 {
//                     cout << a << endl;
//                     mp.erase(a);
//                 }
//             }
//         }
//     }


//     return 0;
// }